1. Field of the Invention
The invention relates to validating transmitted data and, more particularly, to performing a running cyclic redundancy check over multiple machine cycles.
2. Description of the Related Art
Error detection mechanisms, such as Cyclic Redundancy Check (CRC) values are commonly generated on data packets as a method for validating the integrity of a data communications link between devices. Examples of such links include a bus between a central processing unit (CPU) and a graphics processing unit (GPU) in a computer or gaming console. At the sending device, a CRC (generated on data to be sent in a packet) may be appended to the packet. At the receiving device, a CRC may be generated on the data, as received, and compared against the CRC appended to the packet. A mismatch between the CRC generated on the data as received and the CRC appended to the data packet indicates an error in the communications link.
CRCs may be based on a bit serial mathematical transform of the data transmitted in a packet between devices. To speed calculations, some systems may calculate the CRC in a parallel manner using multiple bits per machine cycle. There may be several methods for doing this parallel calculation. In one method, the parallel calculation may be performed by sending a wide internal dataflow through a large array of exclusive “or” (XOR) logic gates and creating a running CRC per machine cycle. The running CRC may also be fed back and used in the generation of a subsequent CRC value. The process may continue until the end of the transmission packet over which the CRC is protecting the integrity.
As the bandwidth of communication links increases, leading to wider internal dataflows, the size and depth of the XOR array may continue to grow and the logic delay may become too large to calculate in a single machine cycle. This may be particularly true in machines operating at high frequency, where a single clock period is equivalent to the latency of a relatively small number of logic gates.
Accordingly what is needed is an improved method for validating the integrity of a data communications link.